import cv2
import numpy as np
image_np = cv2.imread('caihong.jpg')
# 2. HSV空间转换
hsv_image_np = cv2.cvtColor(image_np, cv2.COLOR_BGR2HSV)
# 3. 制作掩膜
# 蓝色范围的上下限
bule_low = np.array([109, 43, 46])
bule_high = np.array([124, 255, 255])
# 制作掩膜1
mask1 = cv2.inRange(
    hsv_image_np, # 基于哪个图像
    bule_low, # 下限
    bule_high # 上限
)
# 橙色范围的上下限
cheng_low = np.array([11, 43, 46])
cheng_high = np.array([25, 255, 255])
# 制作掩膜2
mask2 = cv2.inRange(
    hsv_image_np, # 基于哪个图像
    cheng_low, # 下限
    cheng_high # 上限
)

# 合二为一：位或
mask_image_np = cv2.bitwise_or(mask1, mask2)

# 4. 与运算
# 注意参数，前两个参数放原图，第三个参数给参数名称送掩膜
color_image_np = cv2.bitwise_and(image_np, image_np, mask=mask_image_np)
he=cv2.getStructuringElement(
        cv2.MORPH_ELLIPSE,
        (3,3)
    )
# 5.开运算降噪
morph_image=cv2.erode(
        color_image_np,
        he
    )
morph_image1=cv2.dilate(
        morph_image,
        he
    )
# 6. 图像输出
cv2.imshow('morph_image1',morph_image1)
cv2.imwrite('jieguotu.jpg',morph_image1)
cv2.waitKey(0)